<?php
require_once 'Model/Local.php';
require_once 'DAOBairro.php';
require_once 'DAOCidade.php';
require_once 'DAOEndereco.php';

class DAOLocal extends Banco{
    function getLocais(){
        $Locais = array();
        Banco::conecta();
        $banco = Banco::getBanco();
        $query = $banco->query("SELECT * FROM TB_LOCAL");
        if(!empty($query)){
            while ($q= $query->fetch_assoc() ) {
                $local = new Local();  
                $db = new DAOBairro();
                $dc = new DAOCidade();
                $de = new DAOEndereco();
                $local->setCodigo($q['LOC_CODIGO']);
                $local->setDescricao($q['LOC_DESCRICAO']);
                $local->setBairro($db->getBairro($q['LOC_CODBAIRRO']));
                $local->setCidade($dc->getCidade($q['LOC_CODCIDADE']));
                $local->setNumero($q['LOC_NUMERO']);
                $local->setEndereco($de->getEndereco($q['LOC_CODENDERECO']));
                
                $Locais[] = (object)$local;
            }
        }
        $banco->close();
        return $Locais;
    }
    
    function getLocal($codigo){
        $local = new Local();  
        Banco::conecta();
        $banco = Banco::getBanco();
        if ($sql = $banco->prepare("SELECT LOC_CODIGO, LOC_DESCRICAO, LOC_CODENDERECO, LOC_NUMERO, LOC_CODBAIRRO, LOC_CODCIDADE FROM TB_LOCAL WHERE LOC_CODIGO = ?")) {
            $sql->bind_param('i',$codigo);
            $sql->execute();
            $sql->bind_result($id, $descricao,$end,$num,$bai, $cid);
            while ($sql->fetch()) {
                $db = new DAOBairro();
                $dc = new DAOCidade();
                $de = new DAOEndereco();
                $local->setCodigo($id);
                $local->setDescricao($descricao);
                $local->setBairro($db->getBairro($bai));
                $local->setCidade($dc->getCidade($cid));
                $local->setNumero($num);
                $local->setEndereco($de->getEndereco($end));
            }
            $sql->close();
        }
        $banco->close();
        return (object)$local;
    }
    
    function addLocal(Local $local) {
        Banco::conecta();
        $banco = Banco::getBanco();
        if(is_a($local->getBairro(), 'Bairro')){
            $bairro = $local->getBairro()->getCodigo();
        }else{
            $bairro=null;
        }
        if(is_a($local->getCidade(), 'Cidade')){
            $cidade = $local->getCidade()->getCodigo();
        }
        if(is_a($local->getEndereco(), 'Endereco')){
            $endereco = $local->getEndereco()->getCodigo();
        }
        $descricao = $local->getDescricao();
        $numero = $local->getNumero();
        $lastid=-1;
        if ($sql = $banco->prepare("INSERT INTO TB_LOCAL VALUES(DEFAULT, ?, ?, ?, ?, ?);")){
            $sql->bind_param('siiii',$descricao,$endereco,$numero,$bairro,$cidade);
            $sql->execute();
            $lastid=$sql->insert_id;
            $sql->close();
        }
        $local->setCodigo($lastid);
        $banco->close();
        return (object)$local;
    }
    
    function updateLocal(Local $local){
        Banco::conecta();
        $banco = Banco::getBanco();
        $codigo = $local->getCodigo();
        if(is_a($local->getBairro(), 'Bairro')){
            $bairro = $local->getBairro()->getCodigo();
        }else{
            $bairro=null;
        }
        if(is_a($local->getCidade(), 'Cidade')){
            $cidade = $local->getCidade()->getCodigo();
        }
        if(is_a($local->getEndereco(), 'Endereco')){
            $endereco = $local->getEndereco()->getCodigo();
        }
        $descricao = $local->getDescricao();
        $numero = $local->getNumero();
        $lastid=-1;
        if ($sql = $banco->prepare("UPDATE TB_LOCAL SET LOC_DESCRICAO = ?, LOC_CODENDERECO = ?, LOC_NUMERO = ?, LOC_CODBAIRRO = ?, LOC_CODCIDADE = ? WHERE LOC_CODIGO = ?;")){
            $sql->bind_param('siiiii',$descricao,$endereco,$numero,$bairro,$cidade, $codigo);
            $sql->execute();
            $lastid=$sql->insert_id;
            $sql->close();
        }
        $banco->close();
        $local->setCodigo($lastid);
        return (object)$local;
    }
    
}

?>
